package com.hollycrm.unicom.sheet.flowsupport;

import java.util.List;

import com.hollycrm.unicom.security.AuthToken;
import com.hollycrm.unicom.usersupport.Department;

/**
 * FlowSupportManager
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author Tian Kai
 * @version 1.0
 */

public interface FlowSupportManager {

  /**
   * getDeptAcceptCategoryList
   * @param flowID String
   * @param deptID String
   * @param operateType String
   * @return List
   */
  public List /*SheetCategory*/ getDeptAcceptCategoryList(String flowID,
      String deptID, String operateType);

  /**
   * getDeptReceiveCategoryList
   * @param flowID String
   * @param deptID String
   * @param operateType String
   * @return List
   */
  public List /*SheetCategory*/ getDeptReceiveCategoryList(String flowID,
      String deptID, String operateType);

  /**
   * getPostDeptList
   * @param flowID String
   * @param deptID String
   * @param operateType String
   * @return List
   */
  public List /*DepartmentTreeViewObject*/ getPostDeptList(String flowID,
      String deptID, String operateType);

  /**
   * getNextDeptID
   * @param flowID String
   * @param deptID String
   * @param operateType String
   * @return String
   */
  public String getNextDeptID(String flowID, String deptID, String operateType);

  /**
   * getFuncOperationList
   * @param flowID String
   * @param deptID String
   * @param funcType String
   * @param statusType String
   * @return List
   */
  public List /*String*/ getFuncOperationList(String flowID, String deptID,
                                              String funcType,
                                              String statusType);

  /**
   * doOperate
   *
   * @param authToken AuthToken
   * @param flowID String
   * @param deptID String
   * @param operateType String
   * @param doCtx DoOperateContext
   * @return DoOperateContext
   */
  public DoOperateContext doOperate(AuthToken authToken, String flowID,
                                    String deptID,
                                    String operateType,
                                    DoOperateContext doCtx);

  /**
   * getProcessActionList
   * @param flowID String
   * @param deptID String
   * @param operateType String
   * @return List
   */
  public List getProcessActionList(String flowID, String deptID,
                                   String operateType);

  /**
   * getDeptChildrenAsMove
   * @param deptID String
   * @return List
   * @since 2004-11-27
   * @author tiankai
   */
  public List /*SheetMove*/ getDeptChildrenAsMove(String deptID);

  /**
   * getLeafDeptAsMove
   * @param deptID
   * @return
   */
  public List /*SheetMove*/ getLeafDeptAsMove(String deptID, String flowID);

  /**
   * retrieveDepartment
   * @param deptID
   * @return
   */
  public Department retrieveDepartment(String deptID);

  /**
   * getDeptChildrenAsMove
   * @param deptID String
   * @param isAll boolean
   * @return List
   * @since 2005-04-19
   */
  public List /*SheetMove*/ getDeptChildrenAsMove(String deptID, boolean isAll);

}